﻿/***
  \brief  КЛасс для ошибок. Класс исключения.
*/

#pragma once


#include "core_api.h"
#include "common_types.h"
#include "functions.h"
#include "String.h"
#include "PtrAuto.h"


#pragma warning(push)
#pragma warning(disable : 4275)

  
//!   \brief  КЛасс для ошибок. Класс исключения.
class CORE_API  Error : public std::runtime_error 
{
public:

	Error(const char* msg) : std::runtime_error(msg)
	{
		  OnMessage( what() );
	}

	//добавить реализацию ....
	//static Error Create(const char* _Format, ...);

	//Error(const char* _Format, ...) : std::runtime_error(msg)
	//{
	//
	//}

	Error(const std::string& msg) : std::runtime_error(msg.c_str())
	{
		 OnMessage( what() );
	}

	Error(const Error& a) : std::runtime_error( a.what() )
	{
		 OnMessage( what() );
	}

	const char * what() const 
	{
		return std::runtime_error::what();
	}

	virtual void OnMessage(const char* _Message)
	{
		  MessageError (_Message);
	}

};


#pragma warning(pop)

